#ifndef __UDSF_DELAY_C_
#define __UDSF_DELAY_C_

#include "udf_global.h"

/*
*   notice:
*   UDSF 同UDF编程：不可调用cstd-lib,只可调用"sdk_ifs_udk_cfg.h"、"sys_api.h"中列出的API函数。
*   UDSF文件内函数均需使用static修饰符，且UDF中以#include "UDSF.c"形式引用
*/

static void udsf_delay_us_rom(int us_cnt) __attribute__((unused));
static void udsf_delay_ms_rom(int ms_cnt) __attribute__((unused));
static void udsf_delay_us_xip(int us_cnt) __attribute__((unused));
static void udsf_delay_ms_xip(int ms_cnt) __attribute__((unused));

/* soft delay @20Mhz@ROMorSRAM*/
static void udsf_delay_us_xip(int us_cnt){
	for (int j = 0; j < us_cnt; j++)
	{
		for(uint8_t i = 0; i < 2; i++);  // 待精调
	}
}

/* soft delay @40Mhz@ROMorSRAM*/
static void udsf_delay_us_rom(int us_cnt)
{
	for (int j = 0; j < us_cnt; j++)
	{
		for(int i = 0; i < 6; i++);
	}
}

/* soft delay @20Mhz@ROMorSRAM*/
static void udsf_delay_ms_xip( int ms_cnt){
	for (int j = 0; j < ms_cnt; j++)
	{
		udsf_delay_us_xip(890); // 待精调
	}
}

/* soft delay @40Mhz@ROMorSRAM*/
static void udsf_delay_ms_rom( int ms_cnt){
	for (int j = 0; j < ms_cnt; j++)
	{
		udsf_delay_us_rom(950);
	}
}

#if APPLICATION_MODE_ROM_START == APPLICATION_MODE
#define udsf_delay_us udsf_delay_us_rom
#define udsf_delay_ms udsf_delay_ms_rom
#else
#define udsf_delay_us udsf_delay_us_xip
#define udsf_delay_ms udsf_delay_ms_xip
#endif


#endif
